package com.situ.day1;

import org.junit.Test;

import java.lang.String;
import java.util.Random;
import java.util.Scanner;

public class IfWhileForSwitch {
    @Test
    public void test1() {
        if (3 <= 5) {
            System.out.println("true");
        }
        boolean bool = 4 > 5;
        if (bool) {
            System.out.println("");
        }
    }

    @Test
    public void test2() {
//        >=90   <=100      优秀
//        >=80    <90       良好
//        >=70    <80       一般
//        >=60    <70       及格
//        <60              不及格
        // int score = 48;
        // 从控制台读取用户输入订单值
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩：");
        int score = scanner.nextInt();
        // 卫操作
        // 非法的输入，直接返回
        if (score < 0 || score > 100) {
            System.out.println("非法输入");
            return;// return 方法结束，后面代码不再执行
        }


        if (score >= 90 && score <= 100) {
            System.out.println("优秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("良好");
        } else if (score >= 70 && score < 80) {
            System.out.println("一般");
        } else if (score >= 60 && score < 70) {
            System.out.println("及格");
        } else { // 上面都是false，else就是默认情况
            System.out.println("不及格");
        }
    }

    @Test
    public void testWhile() {
        int i = 1;
        while (i <= 5) {
            System.out.println("HelloWorld");
            i++;
        }
    }

    // 1+2+3+...+100  累加思想
    @Test
    public void test4() {
        int i = 1;
        int sum = 0;
        while (i <= 100) {
            sum = sum + i;
            System.out.println(i);
            System.out.println("result: " + sum);
            i++;
        }
        System.out.println("result: " + sum);
    }

    // 统计思想，数一下符合条件的有多少个（计算1-100以内7的倍数）
    @Test
    public void test33() {
        int i = 1;
        int count = 0;
        while (i <= 100) {
            if (i % 7 == 0) {
                System.out.println(i);
                count++;
            }
            i++;
        }

        System.out.println("count: " + count);
    }

    @Test
    public void test555() {
        for (int i = 1; i <= 5; i++) {
            System.out.println("HelloWorld");
        }
    }

    @Test
    public void test133() {
        // soutm
        System.out.println("IfWhileForSwitch.test133");
        // i j k
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
//            sum = sum + 1;
            sum += i;
            System.out.println(i);
            System.out.println("sum: " + sum);
        }
        System.out.println("sum: " + sum);
    }

    @Test
    public void test() {
        // fori   100.fori
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0) {
                count++;
            }
        }


        System.out.println("count: " + count);
    }

    // continue：跳出本次循环，继续下一次循环
    // break：跳出离他最近的那层循环
    @Test
    public void test88() {
        for (int i = 1; i <= 10; i++) {
            if (i == 3) {
                continue;
            }
            System.out.println(i);
        }
    }

    @Test
    public void test881() {
        for (int i = 1; i <= 10; i++) {
            if (i == 3) {
                break;
            }
            System.out.println(i);
        }
    }

    @Test
    public void test882() {
        for (int i = 1; i <= 10; i++) {
            System.out.println("i: " + i);
            for (int j = 1; j <= 10; j++) {
                if (j == 3) {
                    break;
                }
                System.out.println("j: " + j);
            }
        }
    }

    //    例题：随机生成一个整数。1-100
//    用户输入一个整数，程序给出与存储的数字是“大”或者“小”，知道用户猜到这个数字位置。
//    如果中途用户希望程序退出，输入0可以退出。
    @Test
    public void test99() {
        Scanner scanner = new Scanner(System.in);
        // between zero (inclusive) and bound (exclusive)
        // [0,100) + 1 = [1, 100]
        int random = new Random().nextInt(100) + 1;
        System.out.println("random: " + random);
        // for (;;) {}
        while (true) {
            System.out.println("猜吧");
            int guessNum = scanner.nextInt();
            if (guessNum > random) {
                System.out.println("太大了");
            } else if (guessNum < random) {
                System.out.println("太小了");
            } else {
                System.out.println("恭喜你猜对了");
                break;
            }

            System.out.println("您是否继续这个游戏");
            // scanner.nextInt();
        }

        System.out.println("程序结束");
    }

 //    ****
//    ****
//    ****
    @Test
    public void test999() {
        for (int i = 1; i <= 4; i++) {
            System.out.print("*");
        }
        System.out.println();// 单纯的换行
        for (int i = 1; i <= 3; i++) {
            System.out.println("*");
        }
        System.out.println();
        for (int i = 1; i <= 3; i++) {// 外层循环控制行数
            for (int j = 1; j <= 4; j++) {// 内层循环控制列数(每一行打印多少个)
                System.out.print("*");
            }
            System.out.println();// 打印完一行之后换行
        }
    }

//    *
//    **
//    ***
//    ****
//    *****
    @Test
    public void test19() {
        // i=1  j=1
        // i=2  j=2
        // i=3  j=3
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    @Test
    public void test192() {
        // i=1  j=1
        // i=2  j=2
        // i=3  j=3
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                // "豆豆加加"
                // System.out.println("4*8=32");
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }
    }

    @Test
    public void testSwitch() {
        // 对于固定的几个值的判断，一般使用switch
        int type = 3;
        switch (type) {
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
            default:
                System.out.println("default");
                break;
        }
    }

    @Test
    public void testSwitch3() {
        String method = "selectAll";
        switch (method) {
            case "selectAll":
                System.out.println("selectAll");
                // break;
            case "deleteById":
                System.out.println("deleteById");
                break;
            case "insert":
                System.out.println("insert");
                break;
            default:
                System.out.println("default");
                break;
        }
    }

    @Test
    public void test244() {
//        >=90   <=100      优秀
//        >=80    <90       良好
//        >=70    <80       一般
//        >=60    <70       及格
//        <60              不及格
        // int score = 48;
        // 从控制台读取用户输入订单值
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩：");
        int score = scanner.nextInt();
        // 卫操作
        // 非法的输入，直接返回
        if (score < 0 || score > 100) {
            System.out.println("非法输入");
            return;// return 方法结束，后面代码不再执行
        }

        switch (score / 10) {
            case 9:
            case 10:
                System.out.println("优秀");
                break;
            case 8:
                System.out.println("良好");
                break;
            default:
                System.out.println("不及格");
        }

    }

//    计算某年是不是闰年：
//    1、能被4整除，但是不能被100整除
//    ||
//    2、能被400整除
    @Test
    public void test993() {
        System.out.println("请输入年份");
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            System.out.println(year + "是闰年");
        } else {
            System.out.println("不是闰年");
        }
    }



//   输入月份、年份判断天数：
//  1、3、5、7、8、10、12  -------- 31天
//  4、6 、9、11--------------------30天
//  2----------------------------------28/29天
    @Test
    public void test00() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份");
        int month = scanner.nextInt();
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("30天");
                break;
            case 2:
                System.out.println("请输入年份");
                int year = scanner.nextInt();
                if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                    System.out.println(year + "是闰年");
                } else {
                    System.out.println("不是闰年");
                }
                break;
            default:
                System.out.println("defalut");
                break;
        }
    }

//    作业：
//            1、从控制台输入两个数,然后分别打印这两个数，然后交换这两个数的值
    @Test
    public void test80() {
        int num1 = 3;
        int num2 = 5;
        System.out.println("num1: " + num1);
        System.out.println("num2: " + num2);
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("num1: " + num1);
        System.out.println("num2: " + num2);
    }

//    2.1、编写一个收银台收款程序，if
//    定义输入----单价、数量、用户输入金额
//    定义输出----应收金额、找零
//    使用double类型变量 scanner.nextDouble();
//   2.2、当总价>=500时候打八折
//   2.3、考虑程序出现异常的情况，如：收款金额小于应收金额
//    若收款金额大于等于应收金额，则计算找零后输出
//    若收款金额小于应收金额，输出错误信息。
    @Test
    public void test78() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入单价：");
        double price = scanner.nextDouble();
        System.out.println("请输入数量：");
        double count = scanner.nextDouble();
        double totalPrice = price * count;
        if (totalPrice >= 500) {
            // totalPrice = totalPrice * 0.8;
            totalPrice *= 0.8;
        }
        System.out.println("应收金额: " + totalPrice);
        double inputPrice = scanner.nextDouble();
        System.out.println("付款金额： " + inputPrice);
        if (inputPrice > totalPrice) {
            System.out.println("找零： " + (inputPrice - totalPrice));
        } else {
            System.out.println("正好");
        }
        // BigDecimal
    }

    @Test
    public void test100() {
        System.out.println(1.3 - 1.0);// 0.30000000000000004
        double num = 1.3 - 1.0;
        if (num == 0.3) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }

}
